From 73a6a932d6e927c4608a8726987a3e89545d7bee Mon Sep 17 00:00:00 2001 From: Julien Grall Date: Fri, 10 May 2013 17:22:16 +0100 Subject: [PATCH] xen/mm: Align virtual address on PAGE_SIZE in iounmap ioremap function can unlikely return an unaligned virtual address if the physical address itself is unaligned on a page size. Signed-off-by: Julien Grall Acked-by: Jan Beulich Acked-by: Keir Fraser [ ijc -- include asm/page.h to fix build error on x86 ] --- xen/include/xen/vmap.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h index 88e5d997a0..b1923dd221 100644 --- a/xen/include/xen/vmap.h +++ b/xen/include/xen/vmap.h @@ -2,6 +2,7 @@ #define __XEN_VMAP_H__ #include +#include void *vm_alloc(unsigned int nr, unsigned int align); void vm_free(const void *); @@ -15,7 +16,9 @@ void __iomem *ioremap(paddr_t, size_t); static inline void iounmap(void __iomem *va) { - vunmap((void __force *)va); + unsigned long addr = (unsigned long)(void __force *)va; + + vunmap((void *)(addr & PAGE_MASK)); } void vm_init(void); -- 2.30.2